<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .box {
            width: 500px;
            height: 500px;
            background-color: #ff0;
            position: relative;
            margin: auto;
        }

        .a {
            width: 100px;
            height: 100px;
            background-color: #f00;
            position: absolute;
            cursor: move;
            /* display: none; */
            /* 可见性 */
            /* visibility: hidden; */
            /* opacity: 0; */
        }
    </style>
</head>

<body>

    <div class="box">
        <div class="a"></div>
    </div>



    <script>

        // display:none   元素隐藏了   在dom树中还存在
        //    元素隐藏以后，可以获取到元素，但是获取不到元素的相关的其他信息
        // visibility:hidden  / opacity:0 元素不可见  在dom树中还存在
        //    元素隐藏以后，可以获取到元素及相关的其他信息
        // remove()       元素消失了   在dom树中不存在
        //    这个元素彻底没了，元素是获取不到的



        // 放大镜
        //    前提条件
        //       结构  左边盒子和一个遮罩层     右边盒子和一张超出的大图
        //       遮罩层的移动方向和大图的移动反向是相反的
        //       左边盒子与遮罩层的比例   =   右边盒子和大图的比例



        var oBox = document.querySelector('.box');
        var oA = document.querySelector('.a');

        // 获取元素的相关尺寸需要消耗性能    move事件是一个高频率事件
        var r = oA.offsetWidth / 2;
        console.log(r);
        var _boxLeft = oBox.offsetLeft;
        var _boxTop = oBox.offsetTop;

        var maxWidth = oBox.clientWidth - oA.offsetWidth;
        var maxHeight = oBox.clientHeight - oA.offsetWidth;

        // 鼠标移入移出
        oBox.addEventListener('mouseover', function () {
            oA.style.visibility = 'visible';
        })
        oBox.addEventListener('mouseout', function () {
            oA.style.visibility = 'hidden';
        })




        document.onmousemove = function (e) {
            e = e || event;
            var x = e.x - r - _boxLeft;
            var y = e.y - r - _boxTop;
            if (x < 0) x = 0;
            if (y < 0) y = 0;
            if (x > maxWidth) x = maxWidth;
            if (y > maxHeight) y = maxHeight;
            oA.style.left = x + 'px';
            oA.style.top = y + 'px';
        }

    </script>

</body>

</html>